class PlantRenderer : public IBlockRenderer
{
public:
	ITexture *Texture;
	Point2i TexturePosition;
	Colorb Color;
	bool TopOnly;

	PlantRenderer(ITexture *texture, const Point2i &pos, const Colorb &colorMod, const bool &topOnly = false) :
		Texture(texture),
		TexturePosition(pos),
		Color(colorMod),
		TopOnly(topOnly)
	{
	}

	PlantRenderer(ITexture *tex, const Point2i &pos, const bool &topOnly = false) :
		Texture(tex),
		TexturePosition(pos),
		Color(Colorb::White),
		TopOnly(topOnly)
	{
	}

	int GetTypeData(const int &data) { return data; }

	virtual void Render(Schematic *schematic, RendererBase *renderer, const Block &block, const Point3i &position)
	{
		renderer->Draw(Face(Point3f(0, 0, 0), Point3f(16, 0, 16), Point3f(16, 16, 16), Point3f(0, 16, 0), Color, Texture, TexturePosition, 16, 16));
		renderer->Draw(Face(Point3f(16, 0, 16), Point3f(0, 0, 0), Point3f(0, 16, 0), Point3f(16, 16, 16), Color, Texture, TexturePosition, 16, 16));
		renderer->Draw(Face(Point3f(0, 0, 16), Point3f(14, 0, 0), Point3f(16, 16, 0), Point3f(0, 16, 16), Color, Texture, TexturePosition, 16, 16));
		renderer->Draw(Face(Point3f(16, 0, 0), Point3f(0, 0, 16), Point3f(0, 16, 16), Point3f(16, 16, 0), Color, Texture, TexturePosition, 16, 16));
	}
};